// 测试所有物品使用功能
// 测试将军令和大将军令的使用，生成副将

const WebSocket = require('ws');

// 测试配置
const WS_URL = 'ws://localhost:3000/user-service/websocket?t=test_token_123';

// 测试所有物品ID
const TEST_ITEMS = [
    { id: 63, name: "大将军令", expectedType: "随机" },
    { id: 331, name: "大将军令(绑)", expectedType: "随机" },
    { id: 62, name: "将军令", expectedType: "英才(100%)" },
    { id: 141, name: "将军令(绑)", expectedType: "英才(100%)" }
];

let currentTestIndex = 0;
let ws = null;

function runNextTest() {
    if (currentTestIndex >= TEST_ITEMS.length) {
        console.log('🎉 所有测试完成！');
        if (ws) {
            ws.close();
        }
        return;
    }

    const testItem = TEST_ITEMS[currentTestIndex];
    const testMessage = {
        c: 1387,
        d: {
            gid: testItem.id
        }
    };

    console.log(`\n🧪 测试 ${currentTestIndex + 1}/${TEST_ITEMS.length}: ${testItem.name}`);
    console.log(`🎯 物品ID: ${testItem.id}, 期望结果: ${testItem.expectedType}`);
    console.log('📋 测试指令:', JSON.stringify(testMessage, null, 2));

    // 创建新的WebSocket连接
    ws = new WebSocket(WS_URL);

    ws.on('open', function open() {
        console.log('✅ WebSocket连接已建立');
        console.log('📤 发送测试消息...');
        ws.send(JSON.stringify(testMessage));
    });

    ws.on('message', function message(data) {
        try {
            const response = JSON.parse(data.toString());
            console.log('📥 收到响应:', JSON.stringify(response, null, 2));

            // 分析响应
            if (response.act_id === 1387) {
                if (response.code === 0) {
                    console.log('🎉 物品使用成功!');
                    if (response.data) {
                        console.log('🎖️ 生成的副将信息:');
                        console.log('   - 副将ID:', response.data.deputy?.deputy_id);
                        console.log('   - 副将类型:', response.data.typeName);
                        console.log('   - 基础ID:', response.data.deputy?.base_id);
                        console.log('   - 使用的物品:', response.data.itemName);

                        // 验证结果是否符合预期
                        if (testItem.id === 62 || testItem.id === 141) {
                            if (response.data.deputyType === 3) {
                                console.log('✅ 将军令测试通过：成功获得英才类型副将');
                            } else {
                                console.log('❌ 将军令测试失败：应该获得英才类型副将');
                            }
                        } else {
                            console.log('✅ 大将军令测试通过：成功生成副将');
                        }
                    }
                } else {
                    console.log('❌ 物品使用失败:', response.msg);
                }
            } else {
                console.log('📨 收到其他消息:', response.act_id, response.msg || '');
            }
        } catch (error) {
            console.error('❌ 解析响应失败:', error);
            console.log('📥 原始响应:', data.toString());
        }

        // 关闭连接并运行下一个测试
        ws.close();
    });

    ws.on('error', function error(err) {
        console.error('❌ WebSocket错误:', err);
        currentTestIndex++;
        setTimeout(runNextTest, 1000);
    });

    ws.on('close', function close() {
        console.log('🔌 WebSocket连接已关闭');
        currentTestIndex++;
        setTimeout(runNextTest, 2000); // 等待2秒后运行下一个测试
    });
}

console.log('🚀 开始测试所有物品使用功能...');
console.log(`📊 总共需要测试 ${TEST_ITEMS.length} 个物品`);
console.log('⏳ 等待响应...');

// 开始第一个测试
runNextTest();

// 设置总超时
setTimeout(() => {
    console.log('⏰ 测试超时，强制结束');
    if (ws) {
        ws.close();
    }
    process.exit(0);
}, 60000); // 60秒总超时
